Flash memory devices have many advantages for a large number of applications. These advantages include their non-volatility, speed, ease of erasure and reprogramming, small physical size and related factors. There are no mechanical moving parts and as a result such systems are not subject to failures of the type most often encountered with hard disk storage systems. As a result many portable computer devices, such as laptops, portable digital assistants, portable communication devices, and many other related devices are using flash memory as the primary medium for storage of information.
Flash memory devices are generally operated by first setting all bits in a block to a common state, and then reprogramming them to a desired new state. Blocks of data need to be shuffled during the reprogramming process, which can slow the completion of the operation. Besides being time consuming, reprogramming a block of data can subject the entire block to accidental loss, in the event there is a power failure during the reprogramming process. Normally, as the block is shuffled, it is temporarily stored in a volatile memory device, such as Random Access Memory (RAM). The entire block of data (not just newly entered data) is susceptible to permanent loss if the reprogramming process has not completed prior to the power failure. In these circumstances, an entire block of data may need to be reentered by a user anew.